﻿using System;
using System.Collections.Generic;
using System.Linq;
using Crosland.Automotriz.Logic.Linq;
using Subgurim.Controles;
using Crosland.Automotriz.Entidad;
using System.Web.UI;
using System.Configuration;
using System.Web.UI.WebControls;

namespace Crosland.Automotriz.Web
{
    public partial class wFrmClienteLocal : System.Web.UI.Page
    {
        string idGestionComercial = ConfigurationManager.AppSettings["GestionComercial"];
        const string script = "MostrarAlerta();";

        readonly clsTD_Cliente_LocalBL blLocal = new clsTD_Cliente_LocalBL();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack == false)
            {
                MostrarCliente();
                pcCreateAccount.HeaderText = "Mapa de " + lblCliente.Text.ToUpper();
                ListarLocales();
                Panel img = (Panel)Master.FindControl("asp");
                img.Visible = false;
            }
        }

        void ListarLocales() 
        {
            int Id_Cliente = int.Parse(Request.QueryString["idCliente"]);

            grdLocales.DataSource = blLocal.Listar(Id_Cliente);
            grdLocales.DataBind();
            grdLocales.FocusedRowIndex = -1;
        }

        void MostrarCliente() 
        {
            int Id_Cliente = int.Parse(Request.QueryString["idCliente"]);
            clsTD_ClienteBL blCliente = new clsTD_ClienteBL();
            lblCliente.Text = blCliente.Listar(Id_Cliente).DES_CLIENTE;
        }

        protected string ObtenerIdUnico(Control ctrl)
        {
            string sId = ctrl.UniqueID;
            if (sId == null)
            {
                return null;
            }
            if (sId.IndexOf(':') >= 0)
            {
                return sId.Replace(':', '$');
            }
            return sId;
        }

        protected void CargarLocales()
        {
            int Id_Cliente = int.Parse(Request.QueryString["idCliente"]);

            //mapa.resetMarkers();
            mapa.enableDragging = true;
            mapa.enableHookMouseWheelToZoom = true;
            mapa.setCenter(new GLatLng(-9.750000, -76.000000), 5);
            mapa.addControl(new GControl(GControl.preBuilt.GOverviewMapControl));
            mapa.addGMapUI(new GMapUI());
            //mapa.GZoom = 5;

            List<TD_LocalesCliente> list = blLocal.Listar(Id_Cliente);

            foreach (TD_LocalesCliente item in list)
            {
                if (!string.IsNullOrEmpty(item.NUM_COORDENADA_X) && !string.IsNullOrEmpty(item.NUM_COORDENADA_Y))
                {
                    GMarker marker = new GMarker(new GLatLng(double.Parse(item.NUM_COORDENADA_X), double.Parse(item.NUM_COORDENADA_Y)));

                    string texto = String.Format(CadenaHtml.HtmlLocal, item.ESTABLECIMIENTO,
                        item.DEPARTAMENTO, item.PROVINCIA, item.DISTRITO,
                        item.DIRECCION, item.ID_LOCAL);

                    GInfoWindow window = new GInfoWindow(marker, texto, false);
                    mapa.addInfoWindow(window);
                }
            }
            
        }

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            int Id_Cliente = int.Parse(Request.QueryString["idCliente"]);
            Response.Redirect("wFrmClienteActualizar.aspx?idCliente=" + Id_Cliente.ToString() + "&id=" + idGestionComercial);
        }

        protected void lnkVerMapa_Click(object sender, EventArgs e)
        {
            
            int indice = grdLocales.FocusedRowIndex;
            string lat = grdLocales.GetRowValues(indice, "NUM_COORDENADA_X").ToString();
            string lng = grdLocales.GetRowValues(indice, "NUM_COORDENADA_Y").ToString();
            string establecimiento = grdLocales.GetRowValues(indice, "ESTABLECIMIENTO").ToString();
            string direccion = grdLocales.GetRowValues(indice, "DIRECCION").ToString();
            string departamento = grdLocales.GetRowValues(indice, "DEPARTAMENTO").ToString();
            string provincia = grdLocales.GetRowValues(indice, "PROVINCIA").ToString();
            string distrito = grdLocales.GetRowValues(indice, "DISTRITO").ToString();
            string id_local = grdLocales.GetRowValues(indice, "ID_LOCAL").ToString();

            if (lat == "0" || lng == "0")
            {
                mapa2.resetMarkers();
                mapa2.setCenter(new GLatLng(-9.750000, -76.000000), 5);
                mapa2.enableDragging = true;
                mapa2.enableHookMouseWheelToZoom = true;
                PopupMapaIndividual.ShowOnPageLoad = true;
                PopupMapaIndividual.HeaderText = "Mapa";
            }
            else
            {
                GMarker marker = new GMarker(new GLatLng(double.Parse(lat), double.Parse(lng)));
                string texto = String.Format(CadenaHtml.HtmlLocal, establecimiento, departamento, provincia, distrito, direccion, id_local);
                GInfoWindow window = new GInfoWindow(marker, texto, false);
                mapa2.resetMarkers();
                mapa2.addInfoWindow(window);
                mapa2.setCenter(new GLatLng(double.Parse(lat), double.Parse(lng)), 16);
                mapa2.enableDragging = true;
                mapa2.enableHookMouseWheelToZoom = true;
                PopupMapaIndividual.ShowOnPageLoad = true;
                PopupMapaIndividual.HeaderText = "Mapa - " + direccion.Trim();
            }

        }

        protected void btnVerMapa_Click(object sender, EventArgs e)
        {
            CargarLocales();
            pcCreateAccount.ShowOnPageLoad = true;
        }

        protected void btnNuevoLocal_Click(object sender, EventArgs e)
        {
            int Id_Cliente = int.Parse(Request.QueryString["idCliente"]);
            Response.Redirect("wFrmClienteLocalActualizar.aspx?idCliente=" + Id_Cliente.ToString() + "&id=" + idGestionComercial);
        }

        protected void btnEditar_postback(object sender, EventArgs e)
        {
            int Id_Cliente = int.Parse(Request.QueryString["idCliente"]);
            Response.Redirect("wFrmClienteLocalActualizar.aspx?IdCliente=" + Id_Cliente.ToString() + "&IdLocal=" + hfCodigo.Value + "&id=" + idGestionComercial);
        }

        protected void btnEliminar_postback(object sender, EventArgs e)
        {
            try
            {
                clsTD_Cliente_LocalBL oClienteLocal = new clsTD_Cliente_LocalBL();
                int Id_Cliente = int.Parse(Request.QueryString["idCliente"]);
                oClienteLocal.Eliminar(Id_Cliente, int.Parse(hfCodigo.Value));
                ListarLocales();
                pcCreateAccount.ShowOnPageLoad = false;
                PopupMapaIndividual.ShowOnPageLoad = false;

                lblMensaje.Text = "Local eliminado";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
            }
            catch (Exception ex)
            {
                lblMensaje.Text = ex.Message;
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
            }
        }

        protected void btnEditar2_Click(object sender, EventArgs e)
        {
            int indice = grdLocales.FocusedRowIndex;
            if (indice >= 0)
            {
                int Id_Cliente = int.Parse(Request.QueryString["idCliente"]);

                List<object> keys = grdLocales.GetSelectedFieldValues(new string[] { grdLocales.KeyFieldName });
                if (keys.Count == 0)
                {
                    lblMensaje.Text = "Debe seleccionar una fila de la grilla.";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
                }
                else
                {
                    string ID_LOCAL = keys[0].ToString();
                    Response.Redirect("wFrmClienteLocalActualizar.aspx?IdCliente=" + Id_Cliente.ToString() + "&IdLocal=" + ID_LOCAL + "&id=" + idGestionComercial);
                }
            }
        }

        protected void btnEliminar2_Click(object sender, EventArgs e)
        {
            int indice = grdLocales.FocusedRowIndex;
            if (indice >= 0)
            {
                try
                {
                    clsTD_Cliente_LocalBL oClienteLocal = new clsTD_Cliente_LocalBL();
                    int Id_Cliente = int.Parse(Request.QueryString["idCliente"]);

                    List<object> keys = grdLocales.GetSelectedFieldValues(new string[] { grdLocales.KeyFieldName });
                    int Id_Local = int.Parse(keys[0].ToString());

                    oClienteLocal.Eliminar(Id_Cliente, Id_Local);

                    ListarLocales();
                    pcCreateAccount.ShowOnPageLoad = false;
                    PopupMapaIndividual.ShowOnPageLoad = false;

                    lblMensaje.Text = "Local eliminado";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
                }
                catch (Exception ex)
                {
                    lblMensaje.Text = ex.Message;
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
                }
            }
        }

    }
}